﻿import clases.dades.menu.SubApartat;

/**
 * Dades d'un apartat
 * 
 * @author JDo
 * @version 1.0
 */
class clases.dades.menu.Apartat{
	private var _id            :String;
	private var _nom           :String;
	private var _subApartats   :Array;
	private var _numSubApartats:Number = 0;
	
	/**
	 * Constructor
	 * 
	 * @param $id  ID del apartat
	 * @param $nom Nom del apartat
	 */
	public function Apartat($id:String,$nom:String){
		_id  = $id;
		_nom = $nom;
	}
	
	/**
	 * Afegeix un subapartat al apartat
	 * 
	 * @see clases.dades.menu.SubApartat
	 * @param $subApartat SubApartat a afegir
	 */
	public function addSubApartat($subApartat:SubApartat):Void{
		if(!_subApartats){
			_subApartats = new Array();
		}
		_subApartats.push($subApartat);
		_numSubApartats = _subApartats.length;
	}
	
	/**
	 * Dona un subapartat a partir de la seva ID
	 * 
	 * @param $id ID del subapartat a cercar
	 * @return SubApartat
	 */
	public function getSubApartatXid($id:String):SubApartat{
		var subApartat:SubApartat;
		
		for(var subAp:Number = 0; subAp<_subApartats.length; subAp++){
			if(_subApartats[subAp].id == $id){
				subApartat = _subApartats[subAp];
				break;
			}
		}
		
		return subApartat;
	}
	
	/**
	 * Dona un subapartat a partir del seu index dins l'Array
	 * 
	 * @param $index Posició dins l'array
	 * @return SubApartat
	 */
	public function getSubApartatXindex($index:Number):SubApartat{
		return  _subApartats[$index];
	}
	
	/**
	 * getter del id
	 * 
	 * @return L'identificador del apartat del tipus String
	 */
	public function get id():String{
		return _id;
	}
	
	/**
	 * getter del nom
	 * 
	 * @return El nom del apartat del tipus String
	 */
	public function get nom():String{
		return _nom;
	}
	
	/**
	 * getter dels subapartats
	 * 
	 * @return Array amb els subapartats disponibles
	 */
	public function get subApartats():Array{
		return _subApartats;
	}
	
	/**
	 * getter del numero d'apartats
	 * 
	 * @return Number nombre de subapartats que conté la'partat
	 */
	public function get numSubApartats():Number{
		return _numSubApartats;
	}
	
	/**
	 * @return Les dades de la clase en format String
	 */
	public function toString():String{
		return "\n id: " + _id + " <--> nom: " + _nom +
		       "\n\tsubApartats: " + _subApartats +
			   "\n---------------------------------------";
	}
}